#include <ed_core/tests/step.h>

#include <ed_core/private/noopprogress.h>

using namespace ed_core;

//  _attributeToLevel.resize(118);
//  _attributeToLevel[1]   = 2;
//  _attributeToLevel[2]   = 2;
//  _attributeToLevel[3]   = 2;
//  _attributeToLevel[4]   = 3;
//  _attributeToLevel[5]   = 3;
//  _attributeToLevel[6]   = 3;
//  _attributeToLevel[7]   = 4;
//  _attributeToLevel[8]   = 4;
//  _attributeToLevel[9]   = 4;
//  _attributeToLevel[10]  = 5;
//  _attributeToLevel[11]  = 5;
//  _attributeToLevel[12]  = 5;
//  _attributeToLevel[13]  = 6;
//  _attributeToLevel[14]  = 6;
//  _attributeToLevel[15]  = 6;
//  _attributeToLevel[16]  = 7;
//  _attributeToLevel[17]  = 7;
//  _attributeToLevel[18]  = 7;
//  _attributeToLevel[19]  = 8;
//  _attributeToLevel[20]  = 8;
//  _attributeToLevel[21]  = 8;
//  _attributeToLevel[22]  = 9;
//  _attributeToLevel[23]  = 9;
//  _attributeToLevel[24]  = 9;
//  _attributeToLevel[25]  = 10;
//  _attributeToLevel[26]  = 10;
//  _attributeToLevel[27]  = 10;
//  _attributeToLevel[28]  = 11;
//  _attributeToLevel[29]  = 11;
//  _attributeToLevel[30]  = 11;
//  _attributeToLevel[31]  = 12;
//  _attributeToLevel[32]  = 12;
//  _attributeToLevel[33]  = 12;
//  _attributeToLevel[34]  = 13;
//  _attributeToLevel[35]  = 13;
//  _attributeToLevel[36]  = 13;
//  _attributeToLevel[37]  = 14;
//  _attributeToLevel[38]  = 14;
//  _attributeToLevel[39]  = 14;
//  _attributeToLevel[40]  = 15;
//  _attributeToLevel[41]  = 15;
//  _attributeToLevel[42]  = 15;
//  _attributeToLevel[43]  = 16;
//  _attributeToLevel[44]  = 16;
//  _attributeToLevel[45]  = 16;
//  _attributeToLevel[46]  = 17;
//  _attributeToLevel[47]  = 17;
//  _attributeToLevel[48]  = 17;
//  _attributeToLevel[49]  = 18;
//  _attributeToLevel[50]  = 18;
//  _attributeToLevel[51]  = 18;
//  _attributeToLevel[52]  = 19;
//  _attributeToLevel[53]  = 19;
//  _attributeToLevel[54]  = 19;
//  _attributeToLevel[55]  = 20;
//  _attributeToLevel[56]  = 20;
//  _attributeToLevel[57]  = 20;
//  _attributeToLevel[58]  = 21;
//  _attributeToLevel[59]  = 21;
//  _attributeToLevel[60]  = 21;
//  _attributeToLevel[61]  = 22;
//  _attributeToLevel[62]  = 22;
//  _attributeToLevel[63]  = 22;
//  _attributeToLevel[64]  = 23;
//  _attributeToLevel[65]  = 23;
//  _attributeToLevel[66]  = 23;
//  _attributeToLevel[67]  = 24;
//  _attributeToLevel[68]  = 24;
//  _attributeToLevel[69]  = 24;
//  _attributeToLevel[70]  = 25;
//  _attributeToLevel[71]  = 25;
//  _attributeToLevel[72]  = 25;
//  _attributeToLevel[73]  = 26;
//  _attributeToLevel[74]  = 26;
//  _attributeToLevel[75]  = 26;
//  _attributeToLevel[76]  = 27;
//  _attributeToLevel[77]  = 27;
//  _attributeToLevel[78]  = 27;
//  _attributeToLevel[79]  = 28;
//  _attributeToLevel[80]  = 28;
//  _attributeToLevel[81]  = 28;
//  _attributeToLevel[82]  = 29;
//  _attributeToLevel[83]  = 29;
//  _attributeToLevel[84]  = 29;
//  _attributeToLevel[85]  = 30;
//  _attributeToLevel[86]  = 30;
//  _attributeToLevel[87]  = 30;
//  _attributeToLevel[88]  = 31;
//  _attributeToLevel[89]  = 31;
//  _attributeToLevel[90]  = 31;
//  _attributeToLevel[91]  = 32;
//  _attributeToLevel[92]  = 32;
//  _attributeToLevel[93]  = 32;
//  _attributeToLevel[94]  = 33;
//  _attributeToLevel[95]  = 33;
//  _attributeToLevel[96]  = 33;
//  _attributeToLevel[97]  = 34;
//  _attributeToLevel[98]  = 34;
//  _attributeToLevel[99]  = 34;
//  _attributeToLevel[100] = 35;
//  _attributeToLevel[101] = 35;
//  _attributeToLevel[102] = 35;
//  _attributeToLevel[103] = 36;
//  _attributeToLevel[104] = 36;
//  _attributeToLevel[105] = 36;
//  _attributeToLevel[106] = 37;
//  _attributeToLevel[107] = 37;
//  _attributeToLevel[108] = 37;
//  _attributeToLevel[109] = 38;
//  _attributeToLevel[110] = 38;
//  _attributeToLevel[111] = 38;
//  _attributeToLevel[112] = 39;
//  _attributeToLevel[113] = 39;
//  _attributeToLevel[114] = 39;
//  _attributeToLevel[115] = 40;
//  _attributeToLevel[116] = 40;
//  _attributeToLevel[117] = 40;

QVector<DicePool> Step::_pools = QVector<DicePool>();

void Step::init(ProgressHandler* progress)
{
  CHECK_PROGRESS(progress);

  _pools.resize(41);
  _pools[1]  = ed_core::DicePool() << D4_2;
  _pools[2]  = ed_core::DicePool() << D4_1;
  _pools[3]  = ed_core::DicePool() << D4;
  _pools[4]  = ed_core::DicePool() << D6;
  _pools[5]  = ed_core::DicePool() << D8;
  _pools[6]  = ed_core::DicePool() << D10;
  _pools[7]  = ed_core::DicePool() << D12;
  _pools[8]  = ed_core::DicePool() << D6 << D6;
  _pools[9]  = ed_core::DicePool() << D8 << D6;
  _pools[10] = ed_core::DicePool() << D10 << D6;
  _pools[11] = ed_core::DicePool() << D10 << D8;
  _pools[12] = ed_core::DicePool() << D10 << D10;
  _pools[13] = ed_core::DicePool() << D12 << D10;
  _pools[14] = ed_core::DicePool() << D12 << D12;
  _pools[15] = ed_core::DicePool() << D20 << D6;
  _pools[16] = ed_core::DicePool() << D20 << D8;
  _pools[17] = ed_core::DicePool() << D20 << D10;
  _pools[18] = ed_core::DicePool() << D20 << D12;
  _pools[19] = ed_core::DicePool() << D20 << D6 << D6;
  _pools[20] = ed_core::DicePool() << D20 << D8 << D6;
  _pools[21] = ed_core::DicePool() << D20 << D10 << D6;
  _pools[22] = ed_core::DicePool() << D20 << D10 << D8;
  _pools[23] = ed_core::DicePool() << D20 << D10 << D10;
  _pools[24] = ed_core::DicePool() << D20 << D12 << D10;
  _pools[25] = ed_core::DicePool() << D20 << D10 << D8 << D4;
  _pools[26] = ed_core::DicePool() << D20 << D10 << D8 << D6;
  _pools[27] = ed_core::DicePool() << D20 << D10 << D8 << D8;
  _pools[28] = ed_core::DicePool() << D20 << D10 << D10 << D8;
  _pools[29] = ed_core::DicePool() << D20 << D12 << D10 << D8;
  _pools[30] = ed_core::DicePool() << D20 << D10 << D8 << D6 << D6;
  _pools[31] = ed_core::DicePool() << D20 << D10 << D8 << D8 << D6;
  _pools[32] = ed_core::DicePool() << D20 << D10 << D10 << D8 << D6;
  _pools[33] = ed_core::DicePool() << D20 << D10 << D10 << D8 << D8;
  _pools[34] = ed_core::DicePool() << D20 << D10 << D10 << D10 << D8;
  _pools[35] = ed_core::DicePool() << D20 << D12 << D10 << D10 << D8;
  _pools[36] = ed_core::DicePool() << D20 << D20 << D10 << D8 << D4;
  _pools[37] = ed_core::DicePool() << D20 << D20 << D10 << D8 << D6;
  _pools[38] = ed_core::DicePool() << D20 << D20 << D10 << D8 << D8;
  _pools[39] = ed_core::DicePool() << D20 << D20 << D10 << D10 << D8;
  _pools[40] = ed_core::DicePool() << D20 << D20 << D12 << D10 << D8;
}

Step::~Step()
{
}

DicePool Step::pool() const
{
  return _pools[value()];
}

ed_core::Step::operator quint32() const
{
  return value();
}

